即时通信的安全加密通信模型研究
摘 要
即时通信已经广泛应用于人们的日常生活和工作之中,其安全性和易用性是使用者关心的核心问题。分析了国内外主流即时通信的安全通信模型,并详细讨论了其中的消息加密和发送流程。易用性方面,给出了不同加密模式下群聊和多设备端在线场景中的消息转发原理,设计了端到端加密模式下的安全通信模型。最后分析了各种安全通信模型的适用场景,并提出了相应的选用建议。
内容目录:
1 即时通信的通信模型
1.1 威胁模型
1.2 端到服务器加密的通信模型
1.3 端到端加密的通信模型
1.4 安全性和复杂性比较
2 多设备端在线通信模型
2.1 端到服务器加密情形
2.2 端到端加密模式情形
3 通信模型的适用场景建议
4 结 语
当前各种即时通信软件被人们广泛使用,国内以微信为代表,国外以 WhatsApp、Telegram 为代表,这些即时通信软件的用户量都超过了 10 亿。即时通信几乎完全取代了原来的短信服务,为人们的日常工作和生活提供了信息交互、消息发布、群组通信甚至支付功能,满足了绝大多数人的沟通需求。正是因为每天的消息收发总量数以亿计,即时通信用户越来越关注消息的安全性。此外,考虑到用户体验,即时通信软件的易用性也是至关重要的,比如是否支持群聊,是否支持多设备端同时在线,是否支持历史消息获取等。
众所周知,即时通信的安全性主要由密码学技术来实现,其中身份认证和消息加密是最基本的安全技术。但更关键的是如何在现实应用场景中正确使用这些安全技术来实现既定的安全目标。不同的即时通信软件虽然都采用了身份认证和加密技术,但采用的威胁模型却有比较大的差别,因此它们的消息加密模式和安全级别也不同。斯诺登事件揭露了国外专门机构对个人通信的监控问题后,即时通信的消息安全性越来越受到人们的重视,学术界对即时通信的安全性也开展了一些研究。国内的瞿晓海等人 研究了微信的加密通信原理,分析了微信的登录验证流程和加密密钥生成原理。万园春等人 研究了微信交互协议和加密模式,并分析了密钥生成时的随机数安全性。国外的学者对即时通信的安全协议研究得比较多,Alexander,Bian 和 Raimondo等人分别分析了同步通信协议 Off-the-Record 的认证、群聊通信以及安全性 [3-5]。Cohn-Gordon 等人 对目前广泛使用的端到端加密协议 signal 进行了形式化分析。Frosch 等人从安全协议角度评估了即时通信软件 textsecure 的安全性。Kobeissi 等人利用符号化计算的方法对常见的即时通信协议进行了安全性的自动化验证。Marlinspike 等人对端到端加密中的密钥交换协议 X3DH 进行了详细的阐述。Johansen 等人从用户注册、身份认证、消息加密层面比较了几种国外主流的即时通信软件,给出了针对安全性和易用性的一些改进建议。
本文将着重研究主流即时通信中的两类安全通信模型,一种是端到服务器加密模式下的安全通信模型,另一种是端到端加密模式下的安全通信模型。本文将分析两种安全通信模型在用户的单聊(一对一聊天)、群聊(群组聊天)以及多设备端在线(一个用户同时登录不同类型的设备端)3 种主要场景下的聊天消息加密以及客户端发送消息和服务器转发消息时的差异性,并设计端到端加密模式下的多设备端同时在线通信的实用化模型。
1
即时通信的通信模型
1.1 威胁模型
即时通信是一个包含服务器(运营商)和多个客户端(用户)在内的网络通信系统。根据攻击来源和敌手能力可以分为以下 3 种威胁模型:
(1)被动攻击。该模型中敌手可以记录下一切从网络中获取的信息,包括加密的消息数据、消息收发时间、密钥协商时发送的公钥等。
(2)主动攻击。该模型中敌手除了可以记录网络上获取的信息,还具有消息篡改、延迟、阻断及实施中间人攻击等能力。
(3)运营商攻击。服务器参与用户消息的加密、解密以及转发等过程,服务器也可能作为攻击方,获取用户的身份和聊天等各种信息。
1.2 端到服务器加密的通信模型
端到服务器加密的通信模型场景可以概括为以下两种:
(1)单聊场景。如图 1 所示,端到服务器加密是指每个客户端都与服务器建立加密通道(一般是通过密钥协商协议或者客户端产生会话密钥后,用服务器的公钥进行加密,发送给服务器的方式建立共享密钥),用户 A 要与用户 B 通信,用户 A 的客户端将发送的消息经过共享密钥(服务器与用户 A的共享密钥 KAS)加密后发送给服务器,服务器利用KAS 解密后,再将消息利用共享密钥(服务器与用户B 的共享密钥 KBS)发送给目标用户 B 的客户端。
图 1 端到服务器加密模式下的单聊通信模型
(2)群聊场景:如图 2 所示,在群组通信场景下,群内的一个成员 A 将消息也通过与服务器的共享密钥 KAS 加密后发送给服务器,服务器解密得到明文消息后,再将消息通过服务器与每个成员的共享密钥加密发送给群里的每个成员,本质上与单聊的加密模式没有区别。群内的成员退出后,服务器将不会转发群内的消息,退出的群成员也无法通过捕获其他成员的密文数据获得消息,因为退出的成员没有其他成员与服务器共享的解密密钥。
图 2 端到服务器加密模式下的群聊通信模型
端到服务器加密模型考虑的是主动攻击威胁,通过身份认证和加密防御网络窃听者和第三方主动攻击者。但用户的所有消息都会被服务器知晓,如果服务器被攻破或者本身就是恶意的,则用户的消息安全性不能保证。国内用户量最大的即时通信软件“微信”就是采用端到服务器加密的通信模型。
1.3 端到端加密的通信模型
同理,端到端加密的通信模型场景也可以概括为以下两种:
(1)单聊场景。如图 3 所示,端到端加密实际上采用了两层加密。内层是仅对消息加密,消息加密密钥通常是使用通信双方的公钥进行 ECDH 密钥协商协议而生成。密钥协商过程中服务器只是转发相应的公钥,因此服务器无法获取消息加密密钥。外层加密就是端到服务器加密模式,服务器与客户端进行会话密钥协商建立共享密钥。内层加密保护明文消息(服务器无法解密),外层加密保护通信双方的身份信息,服务器解密这层消息后知道消息应该发给哪一个用户。因为消息加密密钥是由通信双方客户端上产生的公钥协商得到,消息从一个客户端发出后,只有拟定的另一端才能正常解密,所以称为端到端加密。
图 3 端到端加密模式下的单聊通信模型
(2)群聊场景。端到端加密模式下因为服务器无法解密出消息明文,因此不能像端到服务器加密那样将消息明文重新加密转发。此外,对于内层加密,如果消息的发送者想利用与群组每个成员协商的消息加密密钥进行加密,则发送端需要发送n-1条消息(假设群组成员总数为 n),这样会造成消息的发送端通信数据量太大。实际中是群组的每个成员首先生成一个自己发送消息时的消息加密密钥Gk,其次将这个 Gk 发送给其他的群成员,如图 4所示。每个群成员都保存其他成员发过来的消息加密密钥,形成一个密钥库。
图 4 端到端加密模式下群聊密钥的发送
如图 5 所示,当某个成员要发送消息时,就利用之前生成的消息加密密钥 Gk 加密消息,发送给服务器,由服务器转发给其他成员。其他成员收到后,在密钥库中对应选择出相应群成员的密钥 Gk进行解密。这样消息发送端进行群聊时也只发送一条消息,由服务器实现多条消息的转发。
图 5 端到端加密模式下的群聊通信模型
端到端加密模型考虑的是运营商攻击威胁,在这样的通信模型下,运营商只知道用户通信的通联关系,而对用户消息无法解密,进一步提高了用户消息的安全性。国外主流的即时通信软件如WhatsApp、Telegram 等都采用端到端加密的通信模型,并且在单聊和群聊中的消息加密密钥可以进行滚动迭代,每加密一条消息后,消息加密密钥都会进行更换,可以做到加密的前向安全和后向安全,极大地提高了加密的安全强度。
1.4 安全性和复杂性比较
对于即时通信模型的加密通信模型评测主要从安全性和复杂性 2 个方面出发来进行分析。
(1)安全性。端到服务器加密模型中服务器能够完全获取通信用户的所有消息,用户的消息完全在服务器的掌控之下,如有需要,服务器可以对带有敏感词汇的用户消息进行记录、阻断和追踪等操作。在用户隐私保护意识逐渐增强的情况下,国际主流即时通信软件都先后采用了端到端加密模型。此时运营商服务器只能知晓用户的通联关系以及相关的元数据(如通联时间、通联消息条数等),无法知晓消息内容。
(2)复杂性。这两种加密通信模型在安全协议实现的复杂性上有比较大的区别。这里主要分析密钥生成机制。端到服务器加密中,客户端和服务器通过密钥协商协议或者公钥加密会话密钥的方式创建共享的消息加密密钥,一般是一次会话(客户端上线一次)就创建一次密钥,当用户的客户端更新后(比如更换了设备或者在同一设备上重新安装了客户端软件),客户端和服务器将重新创建出新的消息加密密钥。在该客户端更新期间如果有别的用户发来信息,由于服务器能获取明文消息,当新的客户端上线后,服务器只需要利用和这个客户端新创建的密钥加密该明文消息并发送给该客户端即可,且不会出现消息无法解密的情况。
端到端加密模型中密钥更新时的情况则相对复杂。实际在端到端加密模型中,每个端用于密钥协商的公私钥对是客户端安装后随机生成的,因此当用户更换设备或者在同一设备上更新客户端后,原来的公私钥对被删除,客户端会将新产生的公钥上传到服务器。在客户端更新期间,若有其他用户给该客户端发送信息,则消息加密密钥仍是由旧的公钥计算导出的。该客户端安装成功后,服务器将这条消息发送过来,该客户端会发现无法解密。笔者经过实际测试发现,国际上主流的端到端加密的即时通信软件对这种情况下的消息有不同的处理方式。WhatsApp 处理得比较完善,若新的客户端上线后发现收到的消息无法解密,则会反馈给服务器,服务器会要求消息的发送方使用该客户端的新的公钥导出的密钥重新进行加密发送,这样该客户端作为消息的收方不会丢失消息。其他如 Telegram、Signal 等软件则会丢失这样的消息,并且由于客户端更新密钥,消息的发送方会收到服务器的提示消息,必须重新建立一个新的会话才能和该更新后的客户端进行端到端加密通信。
在群聊的场景下可以看出,群组会话密钥的创建也是比较复杂的,每个群组成员都要存储其他群组成员发送的消息加密密钥,每个用户发送群组消息时使用的加密密钥都是不同的,密钥的存储和管理也更复杂。
2
多设备端在线通信模型
一部分即时通信运营商为了提高软件的用户体验和方便性,允许一个用户在多个设备端同时登录相同的账户,比如允许用户同时在 PC 端、平板端和智能手机端进行登录。这时用户所收发的消息都会即时地同步到这些设备端,方便用户进行通信。此时,不同的加密模型下的通信方式有很大的不同。
2.1 端到服务器加密情形
端到服务器加密模型下,服务器只需要管理同一用户的不同设备,并且与这些设备分别建立共享的消息加密密钥。如图 6 所示,假设用户 A 和用户 B进行通信,用户 A 和用户 B 都各自登录了多个设备端。用户 A 给用户 B 发送一条加密消息,服务器收到用户A 的消息后,进行解密,然后将这条消息加密并转发给用户 A 和用户 B 的各个设备端,这样这两个用户的每个设备端都完成了消息同步。用户的每个设备都能独立上线,比如只登陆 PC 端或者智能手机端。
图 6 端到服务器加密模式下的多设备端通信模型
2.2 端到端加密模式情形
对于端到端加密,情形则比较复杂。端到端加密本质上是由加密密钥在一对一的设备之间创建。同样假设用户 A 和用户 B 进行通信,用户 A 和用户 B 都各自登录了多个设备端。由于这些设备端上的公私钥对彼此不同,而用户 A 在发送消息时就必须选定其中一个设备端的公钥进行密钥协商导出消息加密密钥。对 A 来说,若用户 B 有 B1 和 B2 两个设备端,则 A 的客户端首先需要知道用户 B 有这两个设备端在线,其次将这条消息分别用与这两个设备端协商的密钥加密发送。假如此时用户 A 自身也有多个设备端在线,则用户 A 发送消息的客户端还需要将这条消息加密发送给自己的在线设备端。这样的协议过于复杂,而且每个客户端还需要随时保存自己账号以及对方账号的设备端登录状态(已下线的设备就不用发送消息了),此时,发送一条消息带来的数据量较大,这为协议的设计带来了非常大的困难。因此,目前的端到端加密方式的即时通信软件多数不支持多设备端的在线通信。
从上面的分析可知,要是用户的多设备端都独立上线,则协议的设计比较困难。为了使端到端加密的多设备端在线通信成为可能,设计了下面的通信模型。如图 7 所示,用 E(Key,M) 表示使用加密算法 E 和密钥 Key 对消息 M 进行加密。该通信模型中以用户的智能手机端为两端的通信主设备,即用户 A 和用户 B 通信时,消息加密密钥都以对方智能手机端的公钥进行密钥协商并进行导出。用户 A 同时有多个设备端在线,主设备之外的设备称为从设备,比如从设备可以是 PC 端,也可以是平板端。主设备收到对方主设备发来的信息后进行正常解密得到消息明文,然后主设备与从设备之间利用端到端加密将该消息进行加密发送,从设备收到消息后进行解密,从而完成消息的多设备端同步。当用户A 的某个从设备发送消息时,也是首先将消息发送到用户 A 的主设备,其次主设备解密后再将消息重新加密发送至用户 B 的主设备。类似地,用户 B 的主设备再将消息发送至用户 B 的从设备。
图 7 端到端加密模式下的多设备端通信模型
这样设计的通信模型需要通信双方的主设备都要在线,因为其他设备的消息不论收发都是通过主设备进行通信的。实际场景中很多用户是为了消息编辑的方便而使用 PC 端,智能手机端也不会离线,因此这样的设计是比较实用的。该模型中用户设备只是与己方主设备进行通信,避免了己方的设备与对方的所有设备进行密钥协商,较大地减少了对多设备在线状态的感知需求和密钥协商的复杂性。
3
通信模型的适用场景建议
在端到服务器加密模型中,服务器能解密所有用户的密文消息,如有必要可对用户通信的消息内容进行查找和审计等操作。用户消息的明文可在服务器端进行存储,新加入用户设备若是获取到相应的权限,可以很方便地进行历史聊天记录的获取,只需要用与新设备协商生成的消息加密密钥加密之前的明文消息并发送即可,比如一个工作群进来了一个新成员,需要了解这个工作群之前消息中的工作内容,这时就需要获取群中的历史消息。因此,端到服务器加密模型比较适合于一个公司内部的即时通信,特别是公司对员工交流的工作消息内容有审计的必要时,该加密模型可以满足这样的需求。
端到端加密模型中服务器只能作为密文消息的转发者,无法解密出明文的消息内容,通常情况下服务器甚至不存储已经转发成功的用户消息。此外,用户的新设备上线后也无法获取之前的聊天记录。但端到端加密模型对用户的隐私保护更好,且采用的安全协议可以实现消息加密密钥的频繁更换,大大提高了用户消息的安全性,比较适用于通用化的即时通信场景。
4
结 语
本文主要研究了即时通讯的两类安全通信模型,详细分析了它们的单聊和群聊通信的加密和消息收发机制,并从实现层面比较了它们的安全性和复杂性。对于端到端加密模式的多设备端在线通信场景,设计了实用化的多设备端通信模型。本文最后对这两类安全通信模型的适用场景进行了分析,并给出了选用建议。
引用格式:廖思捷 , 范佳 , 王迪 , 等 . 即时通信的安全加密通信模型研究 [J]. 通信技术 ,2023,56(2):207-213.
商务合作 | 开白转载 | 媒体交流 | 理事服务
请联系:15710013727(微信同号)
《信息安全与通信保密》杂志投稿
联系电话:13391516229(微信同号)
邮箱:xxaqtgxt@163.com
《通信技术》杂志投稿
联系电话:15198220331(微信同号)
邮箱:txjstgyx@163.com